package br.gov.sedurb.ws.client;

import br.gov.se.seplag.RequestFixo;
import br.gov.se.seplag.correioscep.CorreiosCEP;
import br.gov.se.seplag.correioscep.CorreiosCEP_PortType;

import br.gov.se.seplag.correioscep.ErroInfoMessage;
import br.gov.se.seplag.correioscep.ParametroConsultarEnderecoPorCEP;

import br.gov.se.seplag.correioscep.ResultadoConsultarEnderecoPorCEP;

import br.gov.sedurb.util.JSFUtils;

import javax.xml.ws.WebServiceRef;
// !THE CHANGES MADE TO THIS FILE WILL BE DESTROYED IF REGENERATED!
// This source file is generated by Oracle tools
// Contents may be subject to change
// For reporting problems, use the following
// Version = Oracle WebServices (11.1.1.0.0, build 130224.1947.04102)

public class CorreiosCEPSOAPClient extends WSClient<CorreiosCEP_PortType> {
    @WebServiceRef
    private static CorreiosCEP correiosCEP;
    private static CorreiosCEPSOAPClient instance;

    private CorreiosCEPSOAPClient() {
        super();
    }

    public static CorreiosCEPSOAPClient getInstance() {
        if (instance == null) {
            instance = new CorreiosCEPSOAPClient();
        }

        return instance;
    }

    public CorreiosCEP_PortType criarPortType() {

        correiosCEP = new CorreiosCEP();

        CorreiosCEP_PortType correiosCEP_PortType =
            correiosCEP.getCorreiosCEPSOAP_Port();

        return correiosCEP_PortType;

    }

    public ResultadoConsultarEnderecoPorCEP consultarEnderecoPorCEP(String cep) {

        ParametroConsultarEnderecoPorCEP request =
            new ParametroConsultarEnderecoPorCEP();
        request.setCep(cep);
        ResultadoConsultarEnderecoPorCEP resultado = null;

        try {
            resultado =
                    getPort().consultarEnderecoPorCEP(request, RequestFixo.cabecalho());
        } catch (ErroInfoMessage e) {
            JSFUtils.addFacesErrorMessage("Erro ao tentar utilizar o serviço " + this.getClass().getSimpleName() + ":" + e.getMessage());
        } catch (Exception e) {
            JSFUtils.addFacesErrorMessage(erroGenerico(e));
        }
        return resultado;
    }
}
